With the growing popularity of wireless Internet and the advance of mobile access technologies, Web applications are increasingly accessible for wireless devices such as cell phones, PDAs and WiFi-enabled laptops. Particularly, dynamic Web page generation techniques, such as Java Servlet and CGI, have become a trend to provide personalized Web pages and context-aware Web services to the wireless devices. However, traditional means of optimizing dynamic Web content generation and delivery are not well suited to the nature of unstable wireless connectivity. When a wireless client loses connection (either voluntarily or involuntarily) or roams into an area with weak connectivity, common optimization techniques, including static page prefetching, dynamic content caching data replication and content adaptation as well as application offloading, will fail to maintain effective interactive operations (e.g., querying account information, filling survey forms, calculating monthly payment for a loan) as they do not eliminate the need to go through the wireless connection for dynamically generated content.
Web caching and pre-fetching are important techniques for improving a user's Web experience. Most of the prior art, however, is targeted to static, non-personalized data. A few other systems, such as the Data Update Propagation (DUP) system, support the caching of dynamic data. DUP is a scheme that, using a graph, maintains data dependence information between cached objects and the underlying data that affect their values. Changes in underlying data trigger a graph traversal algorithm to determine the set of cached objects affected. The DUP scheme, however, is targeted for data used by a large number of users, and is less applicable to highly personalized web data.
Active Cache runs a cache applet for each document at the proxy server. The cache applet is used for pre-request processing for the document. Thus, Active Cache caches code for document generation or composition. Cached applets in Active Cache, however, are not server side code units. Rather, they are designed to run inside the proxy server. In addition, Active Cache does not address state consistency when the same cache applet is replicated on multiple proxy servers, nor does it allow a cache applet to dynamically choose to run on the Web server or on the proxy server.
Therefore, existing Web caching and pre-fetching techniques do not handle well the caching and pre-fetching of highly dynamic, highly personalized applications created using server side code units such as Servlets. One common characteristic of such applications is that seemingly identical tasks can exhibit different interaction sequences at different times or different users. For example, a user playing Web chess against a server gets a response different from the last one and different from other users playing against the same server. While approaches such as Delta-Compression can reduce the amount of data sent from the server to the client, a mobile user may still perceive poor application responsiveness. This is because concurrent execution of such server side code units may overload the server and prolong the service time for the request and because wireless networks tend to have longer round trip times and wider variation in connectivity than fixed-line networks. The combination of these two factors can result in a long delay and a wide variation in service response times and lead to poor user perceived service quality.